package com.xhh.nphm.gaoxin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xhh.nphm.common.core.domain.QueryConditionVo;
import com.xhh.nphm.gaoxin.entity.GxqTwfSendBackEty;
import com.xhh.nphm.gaoxin.entity.GxqTworkFormBaseEty;
import com.xhh.nphm.gaoxin.entity.GxqTworkFormLogEty;



import java.util.List;
import java.util.Map;

public interface GxqIWorkFormBaseService extends IService<GxqTworkFormBaseEty> {

    /**
     * 创建工单
     * @param tworkFormBaseEty
     *
     * @return
     */
    int insert(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 根据来电记录id查询工单
     *
     * @param getDealPk
     * @return
     */
    GxqTworkFormBaseEty selectByGetDealPk(Integer getDealPk);

    /**
     *  派单 修改工单状态的
     *
     * @param tworkFormBaseEty
     * @return
     */
    int updateWork(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 获取电话工单初稿列表数据
     * @return 电话工单初稿列表数据
     */
    List<GxqTworkFormBaseEty> findTwfDraftList(GxqTworkFormBaseEty twfb);

    /**
     * 修改电话工单
     * @param tworkFormBaseEty 工单数据
     * @param tworkFormLogEty 操作日志
     * @return
     */
    int saveWorkForm(GxqTworkFormBaseEty tworkFormBaseEty, GxqTworkFormLogEty tworkFormLogEty);

    GxqTworkFormBaseEty selectByPkId(Integer id);

    /**
     * 撤回承办单位处理中的工单
     * @param twfb 工单信息
     * @param twfl 工单操作日志
     * @return 操作结果
     */
    int sendBack(GxqTworkFormBaseEty twfb,GxqTworkFormLogEty twfl);

    /**
     * 已回访工单 列表数据
     * @param tworkFormBaseEty
     * @return
     */
    List<GxqTworkFormBaseEty> backOverListJson(GxqTworkFormBaseEty tworkFormBaseEty);


    /**
     * 获取网评不满意的工单记录
     * @return 工单记录列表
     */
    List<GxqTworkFormBaseEty> findBadCommentTwfbList(GxqTworkFormBaseEty twfb);

    /**
     * 被退回电话工单列表数据
     * @param tworkFormBaseEty
     * @return
     */
    List<GxqTworkFormBaseEty> backFlowJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 待审办理结果列表数据
     * @param tworkFormBaseEty
     * @return
     */
    List<GxqTworkFormBaseEty> replyWaitJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 重点诉求推荐列表数据
     * @param GxqTwfSendBackEty 拟派工单
     * @return 重点诉求推荐列表数据
     */
    List<Map<String, Object>> keyTwfRecommendListJson(GxqTwfSendBackEty GxqTwfSendBackEty);

    /**
     * 经常出现的被诉主体列表
     * @return
     */
    List<String> hotSpotAccSubjects();

    /**
     * 热点诉求推荐列表数据
     * @return
     */
    List<Map<String, Object>> hotSpotRecommendListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 近期热点事件推送列表数据
     * @param tworkFormBaseEty 查询条件
     * @return 列表数据
     */
    List<Map<String, Object>> nearHotSpotTwfRecommendListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 近期典型事件推送列表数据
     * @param tworkFormBaseEty 查询条件
     * @return 列表数据
     */
    List<Map<String, Object>> nearTypicalTwfRecommendListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 特殊诉求列表数据
     * @param tworkFormBaseEty 查询条件
     * @return 列表数据
     */
    List<Map<String, Object>> specialTwfRecommendListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 典型诉求列表数据
     * @param tworkFormBaseEty 查询条件
     * @return 列表数据
     */
    List<Map<String, Object>> typicalTwfRecommendListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 待回访电话工单列表数据
     * @param tworkFormBaseEty
     * @return
     */
    List<Map<String,Object>> backWaitListJson(GxqTworkFormBaseEty tworkFormBaseEty);

    /**
     * 根据事发地址 查询电话工单
     * @param fmAddress
     * @return
     */
    List<GxqTworkFormBaseEty> telfmAddressJson(String fmAddress);

    /**
     * 根据被诉主体 查询电话工单
     * @param accSubject
     * @return
     */
    List<GxqTworkFormBaseEty> telaccSubjectJson(String accSubject);

    /**
     * 根据用户角色编号和部门编号 查询全区实时满意情况
     *
     * @param roleId 角色编号
     * @param deptId 部门编号
     * @return List<Map>
     */
    List<Map> psTelTotalHandleState(String roleId,String deptId,boolean flag);

    /**
     * 查看已删除工单详情
     * @param pkId
     * @return
     */
    GxqTworkFormBaseEty getByPkId(Integer pkId);

    /**
     * 根据工单号查询工单详情
     */
    GxqTworkFormBaseEty getByWorkNo(String workNo);

    /**
     * 查询电话紧急联系调整
     * @return
     */
    List<Map<String,Object>> wfListBankName(QueryConditionVo qc);
}